import '../models/app_settings.dart';

/// 设置数据仓库接口
/// Settings repository interface
abstract class SettingsRepository {
  /// 获取所有设置
  /// Get all settings
  Future<List<AppSettings>> getAllSettings();
  
  /// 根据键获取设置值
  /// Get setting value by key
  Future<String?> getSettingValue(String key);
  
  /// 设置键值对
  /// Set key-value pair
  Future<void> setSetting(String key, String value);
  
  /// 批量设置
  /// Batch set settings
  Future<void> setSettings(Map<String, String> settings);
  
  /// 删除设置
  /// Delete setting
  Future<void> deleteSetting(String key);
  
  /// 重置所有设置为默认值
  /// Reset all settings to default values
  Future<void> resetToDefaults();
  
  /// 获取主题模式
  /// Get theme mode
  Future<AppThemeMode> getThemeMode();
  
  /// 设置主题模式
  /// Set theme mode
  Future<void> setThemeMode(AppThemeMode mode);
  
  /// 获取通知是否启用
  /// Get notification enabled status
  Future<bool> getNotificationsEnabled();
  
  /// 设置通知启用状态
  /// Set notification enabled status
  Future<void> setNotificationsEnabled(bool enabled);
  
  /// 获取通知时间
  /// Get notification time
  Future<String> getNotificationTime();
  
  /// 设置通知时间
  /// Set notification time
  Future<void> setNotificationTime(String time);
  
  /// 获取字体大小
  /// Get font size
  Future<FontSize> getFontSize();
  
  /// 设置字体大小
  /// Set font size
  Future<void> setFontSize(FontSize fontSize);
  
  /// 获取是否首次启动
  /// Get first launch status
  Future<bool> getIsFirstLaunch();
  
  /// 设置首次启动状态
  /// Set first launch status
  Future<void> setIsFirstLaunch(bool isFirstLaunch);
  
  /// 获取语言设置
  /// Get language setting
  Future<String> getLanguage();
  
  /// 设置语言
  /// Set language
  Future<void> setLanguage(String language);
  
  /// 获取自动备份设置
  /// Get auto backup setting
  Future<bool> getAutoBackupEnabled();
  
  /// 设置自动备份
  /// Set auto backup
  Future<void> setAutoBackupEnabled(bool enabled);
  
  /// 获取提醒频率
  /// Get reminder frequency
  Future<ReminderFrequency> getReminderFrequency();
  
  /// 设置提醒频率
  /// Set reminder frequency
  Future<void> setReminderFrequency(ReminderFrequency frequency);
  
  /// 导出设置数据
  /// Export settings data
  Future<Map<String, String>> exportSettings();
  
  /// 导入设置数据
  /// Import settings data
  Future<void> importSettings(Map<String, String> settings);
  
  /// 根据键获取设置（通用方法）
  /// Get setting by key (generic method)
  Future<String?> getSetting(String key);
}